/*
* Defines all of the classes which inherit from Tile
*/
#ifndef _TILES_
#define _TILES_

#include "Tile.h"

#define NUM_GENERATABLE_TILES 3

// defines a tile which does not have anything in it.
// That means that it has already been cleared and costs
// no energy to traverse
class FreeTile : public Tile
{
public:
	FreeTile();
	virtual ~FreeTile();

	virtual bool IsTravellable();

	virtual int TravelCost();
	virtual Tile* Consume();

protected:
	virtual void getColor(GLColor &color);
};

// defines a tile that has not been travelled yet.
// costs enegy to burrow through it
class DirtTile : public Tile
{
public:
	DirtTile();
	virtual ~DirtTile();

	virtual bool IsTravellable();

	virtual int TravelCost();
	virtual Tile* Consume();

protected:
	virtual void getColor(GLColor &color);
};

// defines a tile that cannot be travelled
class RockTile : public Tile
{
public:
	RockTile();
	virtual ~RockTile();

	virtual bool IsTravellable();

	virtual int TravelCost();
	virtual Tile* Consume();

protected:
	virtual void getColor(GLColor &color);
};

// defines the tile the player is trying to get to
class GoalTile : public Tile
{
public:
	GoalTile();
	virtual ~GoalTile();

	virtual bool IsTravellable();

	virtual int TravelCost();
	virtual Tile* Consume();

protected:
	virtual void getColor(GLColor &color);
};

#endif // _TILES_